package 简单.位运算;

/**
 * 给定一个正整数 n，找到并返回 n 的二进制表示中两个 相邻 1 之间的 最
 * 长距离 。如果不存在两个相邻的 1，返回 0 。
 * 如果只有 0 将两个 1 分隔开（可能不存在 0 ），则认为这两个 1 彼此
 * 相邻 。两个 1 之间的距离是它们的二进制表示中位置的绝对差。例如，"1001" 中的两个 1 的距离为 3 。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/binary-gap
 */
public class 二进制间距_868 {

    public static void main(String[] args) {

        System.out.println(binaryGap(22));

    }

    public static int binaryGap(int n) {
        int ans = 0;
        int pre1 = -1;
        for (int i = 0; i < 32; i++) {
            if (((n >> i) & 1) == 1) {
                if (pre1 != -1) {
                    ans = Math.max(ans, i - pre1);
                }
                pre1 = i;
            }
        }
        return ans;
    }

}
